package cn.bytets.rpc.api.proxy;

import cn.bytets.rpc.api.invoke.Invoker;

/**
 * 代理生成工厂类,可以使用扩展方式SPI动态选择代理工厂
 * 例如: jdk,asm,cglib,javassit
 * 这里可以使用SPI方式扩展
 * @SPI("javassist")
 */
public  interface ProxyFactory {

    /**
     *
     * @param invoker 处理接口方法的Invoker,会执行Invoker.invoke这个方法
     * @param interfaces 被代理的接口
     * @param <T>
     * @return
     */
    public <T> T getProxy(Invoker<T> invoker, Class<?> interfaces);

}
